package com.liu.servicebase.exceptionhandler;

import com.liu.commonutils.ReturnResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
@Slf4j     // 表示要使用logback日志工具
public class GlobalExceptionHandler {


    // 全局异常处理的方式
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public ReturnResult error(Exception e){
        e.printStackTrace();
        return ReturnResult.error().message("执行了全局异常处理..");
    }


    // 处理特定异常的方式
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public ReturnResult error(ArithmeticException e){
        e.printStackTrace();
        return ReturnResult.error().message("执行了自定义异常");
    }


    // 自定义异常处理的方式
    @ExceptionHandler(GuliException.class)
    @ResponseBody
    public ReturnResult error(GuliException guliException){
        guliException.printStackTrace();
        log.error(guliException.getMsg());
        // log.warn(guliException.getMsg());          // 输出warn 日志信息
        return ReturnResult.error().message(guliException.getMessage()).code(guliException.getCode());
    }

}
